From 03350f1ce7398a5b2d54802efe21659bd8d03772 Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Sat, 6 May 2017 03:02:32 +0800 Subject: [PATCH] libxl: u.hvm.usbdevice_list is checked for emptiness Currently usbdevice_list is only checked for nullity. But the OCaml binding will convert empty list to a pointer to NULL, instead of a NULL pointer. That means the OCaml binding will fail to disable USB. This patch will check emptiness of usbdevice_list. And NULL is still a valid empty list. Signed-off-by: Robin Lee Acked-by: Ian Jackson Release-acked-by: Julien Grall --- tools/libxl/libxl_dm.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index f8ba8599e5..44ebd7063c 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -559,9 +559,9 @@ static int libxl__build_device_model_args_old(libxl__gc *gc, } if (libxl_defbool_val(b_info->u.hvm.usb) || b_info->u.hvm.usbdevice - || b_info->u.hvm.usbdevice_list) { - if ( b_info->u.hvm.usbdevice && b_info->u.hvm.usbdevice_list ) - { + || libxl_string_list_length(&b_info->u.hvm.usbdevice_list)) { + if (b_info->u.hvm.usbdevice + && libxl_string_list_length(&b_info->u.hvm.usbdevice_list)) { LOGD(ERROR, domid, "Both usbdevice and usbdevice_list set"); return ERROR_INVAL; } @@ -1149,9 +1149,9 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, } if (libxl_defbool_val(b_info->u.hvm.usb) || b_info->u.hvm.usbdevice - || b_info->u.hvm.usbdevice_list) { - if ( b_info->u.hvm.usbdevice && b_info->u.hvm.usbdevice_list ) - { + || libxl_string_list_length(&b_info->u.hvm.usbdevice_list)) { + if (b_info->u.hvm.usbdevice + && libxl_string_list_length(&b_info->u.hvm.usbdevice_list)) { LOGD(ERROR, guest_domid, "Both usbdevice and usbdevice_list set"); return ERROR_INVAL; } -- 2.30.2